隨著開發過程持續推進,通常會產生大量版本的程式碼,並需要使用版本控制工具追蹤這些程式碼,以利後續維護。除了程式碼,訓練資料也需要進行版本控制,主要原因有以下兩點:
我們通常不會直接使用 Git 來管理資料,而是使用針對資料的版本控制工具。他們通常能追蹤結構化(例如表格類型的資料)與非結構化資料(像是圖片),滿足絕大多數的專案,以下我們將介紹幾種常見的工具。
目前市面上能見度較高的產品有 DagsHub、DVC、Dolt、Git LFS、LakeFS、Neptune、HPE MLDM、Delta Lake,本文主要分享最多人使用與討論度較高的兩個工具 DagsHub 與 DVC。
在巨量資料的環境中進行機器學習實驗,傳統作法會事先將此巨量資量下載至訓練主機後才進行訓練。這個方法較耗時也消耗硬體資源,因此,DagsHub 提供 Direct Data Access (DDA),讓使用者不需要下載全部訓練資料,而是將部分資料先放在訓練主機的 RAM 當中,這批資料訓練完後,再拿取下一批的資料。可以節省巨量資料的下載時間並減少硬體設備的儲存空間。優缺點如下:
首次使用需要先申請帳號,依指示完成後即可進到第一個專案頁面
建立好專案之後,按照提示輸入以下指令就能將專案複製到本地端:
git clone https://dagshub.com/siang.wu/my-first-repo.git
從使用者介面可以看出 DagsHub 整合了資料、程式碼、實驗,這些環節都能在同一個平台上,也支援多人協作,並能以多種方式存取資料。介面上的鋪陳和 GitLab 或 GitHub 都有幾分神似,對於各項功能大多輔以簡單的文字說明,短時間需要上手的話是理想的選擇。如果已經熟悉 GitHub,再加上 MLflow 這類工具的使用經驗,幾乎可以直接流暢地使用,這是 DagsHub 的一大優勢。不過如果團隊超過 3 人,或資料量超過 20 GB,就無法使用免費方案,必須購買每人每月 99 元的方案。
DVC 在使用上雖然沒有像 DagsHub 可以高度整合,但也夠用於多數開發情境中。除了對資料進行版本控制,也能將整個實驗流程(Pipeline)重現和比較不同實驗結果。較適合用於發表論文,假使多年後突然需要重現某個實驗,就能輕鬆將特定超參數的訓練結果呈現出來。優缺點如下:
市面上的資料管理工具百百種,彼此之間都有不同的功能特色,除了以上兩個以外還有眾多開源工具。還有先前介紹過的 HPE MLDM,強調自動擴展且能夠將工作流程視覺化,並做到資料有差異時,自動運行前處理的程式。使用上,DVC 簡單好上手,只要會用 Git 就會用 DVC;而 DagsHub 則進一步整合 DVC 以及 MLflow,囊括資料和模型的版本控制,一切都能在類似 GitHub 的圖形化介面中操作。然而彼此的操作、介面風格以及儲存方式都略有差異,其實很難有完美的選擇,建議可多方嘗試,尋求最適合的方案。
參考資料
Best 8 Data Version Control Tools for Machine Learning 2023 https://dagshub.com/blog/best-data-version-control-tools/
DagsHub Documentation https://dagshub.com/docs/index.html
Data Version Control https://dvc.org/